package Persistencia;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import Modelo.*;


public class AdministradorPersistenciaMovimientos
{
	private static AdministradorPersistenciaMovimientos pool;
	
	
	private AdministradorPersistenciaMovimientos()
	{
	}
	public static AdministradorPersistenciaMovimientos getInstancia()
	{
		if (pool== null)
			pool = new AdministradorPersistenciaMovimientos();
		return pool;
	}
	
	public void insert(Movimiento mov,String num)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "INSERT INTO examen10.dbo.Movimientos (cuit, monto, mes, anho, nro) VALUES (?,?,?,?,?)" ;
			PreparedStatement ps = con.prepareStatement(senten);
			ps.setString(1, mov.getCuit());
			ps.setFloat(2, mov.getMonto());
			ps.setInt(3, mov.getMes());
			ps.setInt(4, mov.getAnho());
			ps.setString(5, num);
			
			ps.execute();
			
			PoolConnection.getPoolConnection().realeaseConnection(con);
			
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Insertar Movimiento: " + e.getMessage());
				System.out.println("Stack Trace al Insertar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      
	}
	public void update(Movimiento mov)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "UPDATE clientes set nombre = ? ,domicilio = ? ,telefono = ? where dni = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.execute();
			
			PoolConnection.getPoolConnection().realeaseConnection(con);
			
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Modificar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Modificar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      
		
	}
	public void delete (Movimiento mov)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "DELETE from movimiento where numero = ?" ;
			PreparedStatement ps = con.prepareStatement(senten);
			ps.execute();
			
			PoolConnection.getPoolConnection().realeaseConnection(con);
			
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Borrar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Borrar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      

	}
	public Movimiento buscarMovimiento(String dni)
	{
		Movimiento mov = null;
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "SELECT nombre,domicilio,telefono,dni from clientes where dni = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setString(1,dni);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{
				mov = new Movimiento();
				
			}
			
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return mov;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Borrar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Borrar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
	      }
	      return mov;
	}
	
}
